﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;
using Cesave.Domain.Core;
using System.Collections;

namespace Cesave.Domain.PermisosModule.Contracts.Municipios
{
	/// <summary>
	/// 
	/// </summary>
	public interface IMunicipioRepository
		: IRepositoryEx<Municipio>
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipiosByEstadoSpecification"></param>
		/// <returns></returns>
		IEnumerable<Municipio> FindMunicipiosByEstadoSpecification(MunicipiosByEstadoSpecification municipiosByEstadoSpecification);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipiosByEstadoSpecification"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		IEnumerable<Municipio> FindMunicipiosByEstadoSpecificationAndStatus(MunicipiosByEstadoSpecification municipiosByEstadoSpecification, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipiosByDistritoSpecification"></param>
		/// <returns></returns>
		IEnumerable<Municipio> FindMunicipiosByDistritoSpecification(MunicipiosByDistritoSpecification municipiosByDistritoSpecification);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipiosByDistritoSpecification"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		IEnumerable<Municipio> FindMunicipiosByDistritoSpecificationAndStatus(MunicipiosByDistritoSpecification municipiosByDistritoSpecification, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipioByGuidSpecification"></param>
		/// <returns></returns>
		Municipio FindMunicipioByGuidSpecification(MunicipioByGuidSpecification municipioByGuidSpecification);

	}
}
